<template>
  <div>
    <slot></slot>
  </div>
</template>

<script>
export default {
  provide(){
    return{
      'form': this
    }
  },
  props:{
    model:{
      type: Object,
      required: true
    },
    rules:{
      type: Object
    }
  },
  methods:{
    // cb为一个回调函数，此处在validate方法中登记一个回调函数
    validate(cb){
      console.log('全局校验')
      // 1. 获取校验项
      // promise数组
      const tasks = this.$children
      .filter(item => item.prop) // 只留下拥有prop属性的FormItem
      .map(item => item.validate())
      // 2. 判断所有输入项全部通过，才能进入then
      Promise.all(tasks)
      .then(() => cb(true))
      .catch(() => cb(false))
    }
  }
}
</script>

<style lang="scss" scoped>

</style>